package fr.thelem.gestiondemandesthelem.web.adminactions;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import fr.thelem.gestiondemandesthelem.dao.model.CPDemandeEntity;
import fr.thelem.gestiondemandesthelem.service.IAppliService;
import fr.thelem.gestiondemandesthelem.web.actions.BaseAction;

/**
 *
 */
public class InvaliderDemandeAction extends BaseAction {

    /** Attribut serialVersionUID */
    private static final long serialVersionUID = 1L;

    private IAppliService appliService;

    private String idDemande;
    private CPDemandeEntity CPDemande;
    private Map invalider = new HashMap();
    private String verif;

    /**
     * Accesseur de appliService
     * 
     * @return le appliService
     */
    public IAppliService getAppliService() {
        return appliService;
    }

    /**
     * Affectation de appliService
     * 
     * @param appliService appliService à affecter
     */
    public void setAppliService(IAppliService appliService) {
        this.appliService = appliService;
    }

    /**
     * Accesseur de idDemande
     * 
     * @return le idDemande
     */
    public String getIdDemande() {
        return idDemande;
    }

    /**
     * Affectation de idDemande
     * 
     * @param idDemande idDemande à affecter
     */
    public void setIdDemande(String idDemande) {
        this.idDemande = idDemande;
    }

    /**
     * Accesseur de cPDemande
     * 
     * @return le cPDemande
     */
    public CPDemandeEntity getCPDemande() {
        return CPDemande;
    }

    /**
     * Affectation de cPDemande
     * 
     * @param cPDemande cPDemande à affecter
     */
    public void setCPDemande(CPDemandeEntity cPDemande) {
        CPDemande = cPDemande;
    }

    /**
     * Accesseur de valider
     * 
     * @return le valider
     */
    public Map getInvalider() {
        return invalider;
    }

    /**
     * Affectation de valider
     * 
     * @param valider valider à affecter
     */
    public void setInvalider(Map invalider) {
        this.invalider = invalider;
    }

    /**
     * Accesseur de verif
     * 
     * @return le verif
     */
    public String getVerif() {
        return verif;
    }

    /**
     * Affectation de verif
     * 
     * @param verif verif à affecter
     */
    public void setVerif(String verif) {
        this.verif = verif;
    }

    /**
     * 
     * {@inheritDoc}
     */
    public String execute() throws Exception {

        int idDemand = Integer.valueOf(idDemande);
        CPDemande = appliService.recupererCPDemandeParId(idDemand);
        return SUCCESS;
    }

    /**
     * Invalidation d'une demande(modification de son état en état invalide)
     * 
     * @return
     * @throws Exception
     */
    public String invaliderDemande() throws Exception {
        for (Iterator i = invalider.keySet().iterator(); i.hasNext();) {
            int idDem = Integer.valueOf((String) i.next());
            // mettre en deuxième paramètre l'id de l'état valide
            appliService.modifierEtatDemande(idDem, "Invalidée");
            appliService.modifierDateDernierEtatDemande(idDem);
        }
        verif = "invalidated";

        return SUCCESS;
    }

}